-- 必须在这个位置定义PROJECT和VERSION变量
-- PROJECT：ascii string类型，可以随便定义，只要不使用,就行
-- VERSION：ascii string类型，如果使用Luat物联云平台固件升级的功能，必须按照"X.X.X"定义，X表示1位数字；否则可随便定义
PROJECT = "FEEDBULKGW" -- 料塔称重网关 与华为云产品名称 苍穹基础资料定义的产品类型保持一致
VERSION = "3.0.19"

require "tool"
-- 加载日志功能模块，并且设置日志输出等级
-- 如果关闭调用log模块接口输出的日志，等级设置为log.LOG_SILENT即可
require "log"
LOG_LEVEL = log.LOGLEVEL_TRACE

-- nvm 初始化
require "nvmConfig"
require "nvm"
nvm.init("nvmConfig.lua")
ISW5500 = nvm.get("w5500Used")
require "config" -- 必须在nvm后面
PRODUCT_KEY = "IrIJfaReBATuCvSQEsx1oGolrCbSowBN"

--[[
如果使用UART输出日志，打开这行注释的代码"--log.openTrace(true,1,115200)"即可，根据自己的需求修改此接口的参数
如果要彻底关闭脚本中的输出日志（包括调用log模块接口和Lua标准print接口输出的日志），执行log.openTrace(false,第二个参数跟调用openTrace接口打开日志的第二个参数相同)，例如：
1、没有调用过sys.opntrace配置日志输出端口或者最后一次是调用log.openTrace(true,nil,921600)配置日志输出端口，此时要关闭输出日志，直接调用log.openTrace(false)即可
2、最后一次是调用log.openTrace(true,1,115200)配置日志输出端口，此时要关闭输出日志，直接调用log.openTrace(false,1)即可
]]
-- log.openTrace(true,1,115200)

require "sys"

-- 初始化配置
require "deviceConfig"
require "serviceConfig"
require "logfile"
-- 按键任务
require "peripherals"
-- 液晶界面显示
require "ui_handle"
require "netLed"
-- pmd.ldoset(2, pmd.LDO_VLCD)
netLed.setup(true, pio.P0_17, pio.P0_16)
ril.request("AT+RNDISCALL=0,1")
function busStart()
    require "net"
    -- 每1分钟查询一次GSM信号强度
    -- 每1分钟查询一次基站信息
    net.startQueryAll(60000, 60000)
    -- 加载错误日志管理功能模块【强烈建议打开此功能】
    -- 如下2行代码，只是简单的演示如何使用errDump功能，详情参考errDump的api
    require "errDump" -- 旧的没有https
    -- errDump.request("udp://ota.airm2m.com:9072")
    errDump.request(config.CQ_URL .. "/wens/auth/smartb/luat/postErrDump.do")

    -- 加载远程升级功能模块【强烈建议打开此功能，如果使用了阿里云的OTA功能，可以不打开此功能】
    -- 如下3行代码，只是简单的演示如何使用update功能，详情参考update的api以及demo/update
    require "update"
    -- 12小时进行一次升级判断
    update.request(nil, config.UPDATE_URL, 12 * 3600 * 1000, false)

    -- 苍穹相关接口
    require "wenscq"
    --
    -- 加载mqtt任务模块
    require "mqttTask"
    -- 自注册完成后才会启动mqtt任务
    if deviceConfig.getData().mqtt.hasinit then
        mqttTask.startMqtt()
        require "aLiIotda"
        require "aLiCMD"
    end
    -- 485uart
    require "uart485"
    require "uart485_tran"
    -- 自动缓存api发送
    require "apiCache"
    apiCache.startRetryTask()
    -- apiCache.startRetryTaskTest()
    require "eventPost"
    eventPost.runTask1()
    eventPost.runTask2()
    -- eventPost.testTask() -- 启动这个的时候不用启动上面的runTask1

end

require "w5500"
if _G.ISW5500 == true then
    require "dhcp"
    sys.taskInit(function()
        sys.wait(2000)
        w5500.init()
        sys.wait(5000)
        if nvm.get("NET_MODE") == "DHCP" then
            while true do
                if dhcp.dhcp_task() == true then
                    break
                else
                    log.info("DHCP", "Dhcp task Reexecution...")
                end
                sys.wait(5000)
            end
            -- 自动续约任务
            sys.taskInit(function()
                sys.wait(6000)
                while true do
                    if tool.miscTime() > nvm.get("DHCP_LEASE") then
                        if nvm.get("IS_LEASED") == false then
                            -- 经过了0.5个租期后，续约
                            dhcp.dhcpLease()
                        end
                    end
                    sys.wait(30 * 60 * 1000)
                end
            end)
            busStart()
        else
            -- 静态ip时
            w5500.w_ntp()
            busStart()
            -- require "testHttp"
            ----testHttp.downloadFile()
            -- testHttp.postLogList()
        end
    end)
else
    -- 使用4g通信
    busStart()
end

-- 启动系统框架
sys.init(0, 0)
sys.run()
